package com.example.d4_byte_stream;

import java.io.*;

/**
 * 目标：使用FileInputStream(文件字节输入流)一次读取完文件的全部字节
 */
public class FileInputStreamTest3 {
    public static void main(String[] args) throws Exception {
        // 方式一：自己定义一个字节数组大小和被读取的文件大小一样,然后使用这个字节数组,一次性读取全部字节
        // 1.一次性读取完文件的全部字节到一个字节数组中去
        // 创建一个字节输入流管道与源文件接通
        InputStream is = new FileInputStream("day19-file-io\\src\\yu03.txt");

        // 2.准备一个字节数组,大小与文件的大小正好一样大
        /*
        File file = new File("day19-file-io\\src\\yu03.txt");
        byte[] buffer = new byte[(int) file.length()];

        int len = is.read(buffer);
        System.out.println(new String(buffer));

        System.out.println(len);
        System.out.println(file.length());
        */

        // 方式二：Java官方提供了一个方法,直接读取全部字节,返回一个字节数组
        byte[] bytes = is.readAllBytes();
        System.out.println(new String(bytes));

        // 这种存在的缺陷：一次读取全部的字节
        // 1.如果读取的文件过大,底层会抛出异常
        is.close(); // 关闭流
    }
}
